바이너리로 MariaDB 설치
본 설치방법사용에 따른 문제는 소프트캠프에 책임이 없음을 알려 드립니다.
본 가이드는 바이너리로 설치하는 방법 예시입니다.
인터넷 상에 바이너리 설치 방법 중 성공한 부분을 발췌하여 공유하였고
설치에 대한 책임은 소프트캠프에 없으며 다른 설치 방법으로 설치 해도 무관합니다.
1. 바이너리파일 다운로드
2. 유저 및 그룹 생성
groupadd mysql
useradd -g -m mysql mysql
chown -R mysql:mysql mariadb*.tar.gz
3. 압축 풀기
- 압축 파일 /usr/local 아래로 이동
mv mariadb*.tar.gz /usr/local/mariadb.tar.gz
- 압축 해제
cd /usr/local
tar -zxvf mariadb.tar.gz
- 심볼릭 링크 생성
ln -s ./mariadb압출해제디렉토리 /usr/local/mysql
4. 환경변수 등록
vi /etc/profile
- 아래에 내용 추가
export MARIADB_HOME=/usr/local/mysql
export PATH=$PATH:$MARIADB_HOME/bin:.
- 수정내용 적용
source /etc/profile
5. my.cnf 수정
vi /etc/my.cnf
해당 파일이 없거나 기본 설치한 경우 아래 경로를 확인, 파일자체가 없다면 아래 내용으로 my.cnf 생성
vi /etc/mysql/mariadb.conf.d/50-server.cnf
- 아래의 설정을 추가 후 저장
파일별 맞는 [항목]의 값들을 넣어주세요
기존에 [항목] 이 있는데 하위에 넣으면 상위의 값만 사용이 됩니다.
각 파일에 맞는 항목을 [mysql], [mysqld]등의 항목에 맞는 값을 넣어주세요.
자동 설치를 통해 설치한 경우 50-server.cnf, 50-client.cnf파일로 사용하시면 됩니다.
- 아래의 설정을 각 항목에 추가, 고객사 환경에 맞는 값으로 기록해야 하는 항목 맨 하단에 있음.
- 기본 경로로 설치
- DB데이터 경로 지정하여 설치
- server.cnf
- client.cnf
[mysql]
# CLI 클라이언트에서 자동 완성 기능 비활성화
no-auto-rehash
[mysqld_safe]
# 동시에 열 수 있는 파일의 최대 개수 설정
open-files-limit = 65535
[mysqld]
#초기값 : bind-address = 127.0.0.1 에서 수정
bind-address = 0.0.0.0
#초기값 : character-set-server = utf8 에서 수정
character-set-server = utf8mb4
#초기값 : collation-server=utf8_general_ci 에서 수정
collation-server=utf8mb4_general_ci
#초기값 : expire_logs_days = 10 에서 수정
expire_logs_days = 3
# 호스트명 확인 과정 생략으로 접속 속도 향상
skip-name-resolve
# 테이블명을 소문자로 저장하고 대소문자 구분 없이 처리
lower_case_table_names = 1
# 새로운 연결이 생성될 때마다 문자셋을 UTF-8로 설정
init_connect = SET NAMES utf8
# 새로운 연결의 문자열 정렬 규칙 설정
init_connect = SET collation_connection = utf8mb4_general_ci
# === 로그 설정 ===
# 경고 메시지 로깅 활성화
log_warnings = 1
# 바이너리 로그 형식을 ROW 형식으로 설정 (상세한 변경 내용 기록)
binlog_format = ROW
# 바이너리 로그를 디스크에 즉시 동기화
sync_binlog = 1
# 바이너리 로그 캐시 크기 설정
binlog_cache_size = 1M
# 복제 환경에서 함수 생성 허용
log_bin_trust_function_creators = 1
# 일반 쿼리 로그 설정
log-output = FILE
general_log = OFF
# 슬로우 쿼리 로그 설정
slow_query_log = ON
# 3초 이상 걸리는 쿼리를 슬로우 쿼리로 기록
long_query_time = 3
# === 연결 및 스레드 설정 ===
# 최대 동시 접속자 수
max_connections = 1000
# 최대 접속 에러 수
max_connect_errors = 100
# 대기 큐 크기
back_log = 100
# 스레드 캐시 크기
thread_cache_size = 1000
# 미사용 연결 타임아웃 (초)
wait_timeout = 3600
interactive-timeout = 3600
# === 쿼리 캐시 설정 ===
# 쿼리 캐시 비활성화 (성능 향상을 위해)
query_cache_size = 0M
query_cache_type = 0
query_cache_limit = 0M
# === 메모리 테이블 설정 ===
# 메모리 테이블의 최대 크기
max_heap_table_size = 32M
# 임시 테이블의 최대 크기
tmp_table_size = 32M
# 패킷의 최대 크기
max_allowed_packet = 1024M
# === 버퍼 설정 ===
# 인덱스 읽기 버퍼 크기
read_rnd_buffer_size = 4M
# 테이블 스캔 버퍼 크기
read_buffer_size = 2M
# 정렬 버퍼 크기
sort_buffer_size = 2M
# 조인 버퍼 크기
join_buffer_size = 2M
# 열린 테이블 캐시 크기
table_open_cache = 10000
# === 트랜잭션 설정 ===
# 트랜잭션 격리 수준 설정
transaction_isolation = READ-COMMITTED
# === 시스템 설정 ===
# DNS 조회 비활성화
skip_name_resolve = ON
# 외부 잠금 비활성화
skip_external_locking = ON
# 호스트 캐시 비활성화
skip-host-cache
# === MyISAM(스토리지 엔진) 설정 ===
# MyISAM 키 버퍼 크기
key_buffer_size = 32M
# 대량 삽입 버퍼 크기
bulk_insert_buffer_size = 64M
# MyISAM 정렬 버퍼 크기
myisam_sort_buffer_size = 128M
# MyISAM 임시 파일 최대 크기
myisam_max_sort_file_size = 10G
# MyISAM 복구 스레드 수
myisam_repair_threads = 1
# === InnoDB 설정 ===
# 기본 스토리지 엔진 설정
default-storage-engine = InnoDB
default-tmp-storage-engine = InnoDB
# 테이블별 파일 사용 (관리의 용이성)
innodb_file_per_table = 1
# InnoDB 로그 파일 크기
innodb_log_file_size = 512M
# InnoDB 로그 버퍼 크기
innodb_log_buffer_size = 32M
# 트랜잭션 커밋 시 로그 동기화 설정
innodb_flush_log_at_trx_commit = 1
# 잠금 대기 타임아웃 (초)
innodb_lock_wait_timeout = 30
# === 시스템 리소스에 따른 설정 ===
# ****** 중 요 ******
###고객사에 맞게 셋팅되어야 하는 설정###
# 물리 메모리의 50%로 설정 (예: 32GB 메모리의 경우 16GB 설정)
innodb_buffer_pool_size = 16G
# CPU 코어 수의 1/2로 설정 (예: 8코어의 경우 4 설정)
innodb_write_io_threads = 4
innodb_read_io_threads = 4
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
RPM으로 기본 설치시 파일들이 기본으로 설정되는 경로
# basedir = /usr
# datadir = /var/lib/mysql
# tmpdir = /tmp
# log_error = /var/log/mariadb/mariadb.log
# log_bin = /var/lib/mysql/mysql-bin
# 참고: log_bin이 활성화된 경우에만 해당 경로에 파일 생성
# general_log_file = /var/lib/mysql/hostname.log
# 참고: general_log가 활성화된 경우에만 해당 경로에 파일 생성
# slow_query_log_file = /var/lib/mysql/hostname-slow.log
# 참고: slow_query_log가 활성화된 경우에만 해당 경로에 파일 생성
# innodb_data_home_dir = /var/lib/mysql
# innodb_data_file_path = ibdata1:12M:autoextend
# innodb_log_group_home_dir = /var/lib/mysql
- server.cnf
- client.cnf
[mysql]
# CLI 클라이언트에서 자동 완성 기능 비활성화
no-auto-rehash
[mysqld_safe]
# 동시에 열 수 있는 파일의 최대 개수 설정
open-files-limit = 65535
[mysqld]
#초기값 : bind-address = 127.0.0.1 에서 수정
bind-address = 0.0.0.0
#초기값 : character-set-server = utf8 에서 수정
character-set-server = utf8mb4
#초기값 : collation-server=utf8_general_ci 에서 수정
collation-server=utf8mb4_general_ci
# 호스트명 확인 과정 생략으로 접속 속도 향상
skip-name-resolve
# 테이블명을 소문자로 저장하고 대소문자 구분 없이 처리
lower_case_table_names = 1
# 새로운 연결이 생성될 때마다 문자셋을 UTF-8로 설정
init_connect = SET NAMES utf8
# 새로운 연결의 문자열 정렬 규칙 설정
init_connect = SET collation_connection = utf8mb4_general_ci
# === 디렉토리 설정 ===
## DB데이터/로그를 /home/softcamp하위에 생성한다는 가정으로 지정한 샘플
## dir관련 설정은 고객사 환경에 맞게 지정 필요
# MySQL 설치 기본 디렉토리
## dir관련 설정
basedir = /usr/local/mysql
# 데이터 파일이 저장되는 디렉토리
## dir관련 설정
datadir = /home/softcamp/DB/data
# 임시 파일이 저장되는 디렉토리
## dir관련 설정
tmpdir = /home/softcamp/DB/tmp
# === 로그 설정 ===
# 에러 로그 파일 위치
## dir관련 설정
log_error = /home/softcamp/DB/log/maria.err
# 경고 메시지 로깅 활성화
log_warnings = 1
# 바이너리 로그 설정 (복제 및 백업용)
## dir관련 설정
log_bin = /softcamp/DB/bin-log/mysql-bin
# 바이너리 로그 형식을 ROW 형식으로 설정 (상세한 변경 내용 기록)
binlog_format = ROW
# 바이너리 로그를 디스크에 즉시 동기화
sync_binlog = 1
# 바이너리 로그 캐시 크기 설정
binlog_cache_size = 1M
# 복제 환경에서 함수 생성 허용
log_bin_trust_function_creators = 1
# 일반 쿼리 로그 설정
log-output = FILE
general_log = OFF
## dir관련 설정
general_log_file = /home/softcamp/DB/log/general.log
# 슬로우 쿼리 로그 설정
slow_query_log = ON
## dir관련 설정
slow_query_log_file = /home/softcamp/DB/log/slow-query.log
# 3초 이상 걸리는 쿼리를 슬로우 쿼리로 기록
long_query_time = 3
# === 연결 및 스레드 설정 ===
# 최대 동시 접속자 수
max_connections = 1000
# 최대 접속 에러 수
max_connect_errors = 100
# 대기 큐 크기
back_log = 100
# 스레드 캐시 크기
thread_cache_size = 1000
# 미사용 연결 타임아웃 (초)
wait_timeout = 3600
interactive-timeout = 3600
# === 쿼리 캐시 설정 ===
# 쿼리 캐시 비활성화 (성능 향상을 위해)
query_cache_size = 0M
query_cache_type = 0
query_cache_limit = 0M
# === 메모리 테이블 설정 ===
# 메모리 테이블의 최대 크기
max_heap_table_size = 32M
# 임시 테이블의 최대 크기
tmp_table_size = 32M
# 패킷의 최대 크기
max_allowed_packet = 1024M
# === 버퍼 설정 ===
# 인덱스 읽기 버퍼 크기
read_rnd_buffer_size = 4M
# 테이블 스캔 버퍼 크기
read_buffer_size = 2M
# 정렬 버퍼 크기
sort_buffer_size = 2M
# 조인 버퍼 크기
join_buffer_size = 2M
# 열린 테이블 캐시 크기
table_open_cache = 10000
# === 트랜잭션 설정 ===
# 트랜잭션 격리 수준 설정
transaction_isolation = READ-COMMITTED
# === 시스템 설정 ===
# DNS 조회 비활성화
skip_name_resolve = ON
# 외부 잠금 비활성화
skip_external_locking = ON
# 호스트 캐시 비활성화
skip-host-cache
# === MyISAM(스토리지 엔진) 설정 ===
# MyISAM 키 버퍼 크기
key_buffer_size = 32M
# 대량 삽입 버퍼 크기
bulk_insert_buffer_size = 64M
# MyISAM 정렬 버퍼 크기
myisam_sort_buffer_size = 128M
# MyISAM 임시 파일 최대 크기
myisam_max_sort_file_size = 10G
# MyISAM 복구 스레드 수
myisam_repair_threads = 1
# === InnoDB 설정 ===
# 기본 스토리지 엔진 설정
default-storage-engine = InnoDB
default-tmp-storage-engine = InnoDB
# InnoDB 데이터 홈 디렉토리
## dir관련 설정
innodb_data_home_dir = /home/softcamp/DB/maria-data
# 테이블별 파일 사용 (관리의 용이성)
innodb_file_per_table = 1
# InnoDB 데이터 파일 경로 및 크기 설정
## dir관련 설정
innodb_data_file_path = ibdata1:1G;ibdata2:1G;ibdata3:1G:ibdata4:1G:ibdata5:10M:autoextend
# InnoDB 로그 파일 디렉토리
## dir관련 설정
innodb_log_group_home_dir = /home/softcamp/DB/maria-data
# InnoDB 로그 파일 크기
innodb_log_file_size = 512M
# InnoDB 로그 버퍼 크기
innodb_log_buffer_size = 32M
# 트랜잭션 커밋 시 로그 동기화 설정
innodb_flush_log_at_trx_commit = 1
# 잠금 대기 타임아웃 (초)
innodb_lock_wait_timeout = 30
# === 시스템 리소스에 따른 설정 ===
# ====== 중 요 ======
###고객사에 맞게 셋팅되어야 하는 설정 아래 참고 설정###
# 물리 메모리의 50%로 설정 (예: 32GB 메모리의 경우 16GB 설정)
innodb_buffer_pool_size = 16G
# CPU 코어 수의 1/2로 설정 (예: 8코어의 경우 4 설정)
innodb_write_io_threads = 4
innodb_read_io_threads = 4
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
물리 메모리확인 방법(innodb_buffer_pool_size의 값 구하기)
- 계산기에서 명령어로 나온값 /1024 /1024 /2 하였을때 나온 정수에 G붙여서 기입
cat /proc/meminfo | grep MemTotal
CPU Core확인 방법(innodb_write_io_threads, innodb_read_io_threads의 값 구하기)
- 계산기에서 명령어로 나온값 / 2 하였을때 나온 정수를 기입
grep ^processor /proc/cpuinfo | wc -l
6. 설치
cd /usr/local/mysql/scripts
./mysql_install_db --user=사용자명 --basedir=/usr/local/mysql --datadir=/var/lib/mysql/data
basedir, datadir 등 해당 계정이 읽고 쓸 수 있는 권한이 있는지 소유자인지 사전에 확인되어야 함.
7. systemd 서비스 등록
mariadb.service 설정 수정
cd /usr/local/mysql/support-files/systemd
vi mariadb.service